import {app, BrowserWindow, ipcMain, ipcRenderer} from 'electron'

import {loadListener} from "../renderer/api/ipcMainListener";
import {tasksMap} from "../renderer/api/download";

/**
 * Set `__static` path to static files in production
 * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html
 */
if (process.env.NODE_ENV !== 'development') {
    global.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
}

let mainWindow;
const winURL = process.env.NODE_ENV === 'development'
    ? `http://localhost:18321`
    : `file://${__dirname}/index.html`;

function createWindow() {
    /**
     * Initial window options
     */
    mainWindow = new BrowserWindow({
        width: 1366,
        height: 768,
        minWidth: 1366,
        minHeight: 768,

        // Boolean (可选) - width 和 height 将使用 web 页面的尺寸,
        // 这意味着实际窗口的尺寸应该包括窗口框架的大小，稍微会大一点。 默认值为 false.
        useContentSize: true,
        //  Object (可选) - 网页功能的设置
        webPreferences: {
            //  Boolean (可选) - 当设置为 false,
            // 它将禁用同源策略 (通常用来测试网站), 如果此选项不是由开发者设置的，
            // 还会把 allowRunningInsecureContent设置为 true. 默认值为 true。
            webSecurity: false
        },
        // Boolean (可选) - 自动隐藏菜单栏, 除非按了Alt键. 默认值为false.
        autoHideMenuBar: false,

        // (NativeImage | String) (可选) - 窗口的图标. 在 Windows 上推荐使用 ICO 图标来获得最佳的视觉效果, 默认使用可执行文件的图标.
        // icon: ''

        // 要创建无边框窗口，只需在 BrowserWindow 的 options 中将 frame 设置为 false
        // 无边框模式下，需要设置body样式和css
        frame: false,
        // 通过将 transparent 选项设置为 true, 还可以使无框窗口透明
        // transparent: true,
    });

    mainWindow.loadURL(winURL);

    mainWindow.on('closed', () => {
        mainWindow = null
    });

    mainWindow.on('show-window', () => {
        mainWindow.maximize();
    });

    mainWindow.on('login-window', () => {
        mainWindow.setSize(1024, 768)
    });
}

app.on('ready', createWindow);

app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') {
        app.quit()
    }
});

app.on('activate', () => {
    if (mainWindow === null) {
        createWindow();
    }
});

const ipc = ipcMain;
// 登录窗口最小化
ipc.on('window-min', function () {
    mainWindow.minimize();
});
// 登录窗口最大化
ipc.on('window-max', function () {
    if (mainWindow.isMaximized()) {
        mainWindow.restore();
    } else {
        mainWindow.maximize();
    }
});
// 关闭窗口
ipc.on('window-close', function () {
    mainWindow.close();
});

global.tasksMap={};

//加载所有的监听
loadListener(app);